Three-dimensional printing using fast STL file conversion

ABSTRACT

Methods are provided for solid free-form fabrication of an article without using a slice stack file quickly and efficiently—in terms of computational resources—converting STL files representing an article or articles to be built by SFFF without the use of a conventional slicing program. An application program interface (“API”) is used to generate a bitmap corresponding to each particular layer of the article that is to be printed directly from the article&#39;s STL file. This conversion may done essentially in real time immediately before the particular layer is to be printed. The bitmap is used in configuring the printing instructions for the SFFF printing mechanism to print that particular layer.

FIELD OF THE INVENTION

The present invention relates to the field of solid free-formfabrication, which is also known as additive manufacturing. Inparticular, the invention relates to methods for quickly transforming astereolithographic data file (.stl) containing a three dimensionalmathematical model of the physical article that is to be produced bysolid free-form fabrication into instructions to the printing mechanismfor the layer-by-layer construction of the physical article.

BACKGROUND OF THE INVENTION

In recent years, solid free-form fabrication processes (also known asadditive manufacturing processes) have been developed for producing aphysical article directly from an electronic representation of thearticle. The term “solid free-form fabrication process” (“SFFF”) as usedherein refers to any process that results in a three-dimensionalphysical article and includes a step of sequentially forming the shapeof the article one layer at a time from an electronic representation ofthe article. Solid free-form fabrication processes are also known in theart as “layered manufacturing processes.” They are also sometimesreferred to in the art as “rapid prototyping processes” when thelayer-by-layer building process is used to produce a small number of aparticular article. A solid free-form fabrication process may includeone or more post-shape forming operations that enhance the physicaland/or mechanical properties of the article. Examples of solid free-formfabrication processes include the three-dimensional printing (“3DP”)process and the Selective Laser Sintering (“SLS”) process. An example ofthe 3DP process may be found in U.S. Pat. No. 6,036,777 to Sachs, issuedMar. 14, 2000. An example of the SLS process may be found in U.S. Pat.No. 5,076,869 to Bourell et al., issued Dec. 31, 1991. Solid free-formfabrication processes in accordance with the present invention can beused to produce articles comprised of metal, polymeric, ceramic,composite materials, and other materials. The development of solidfree-form fabrication processes has produced a quantum jump reduction inthe time and costs incurred in going from concept to manufacturedarticle by eliminating costly and time-consuming intermediate steps thatwere traditionally necessary.

Many solid free-form fabrication processes consist of the basic stepsof: (1) applying and smoothing out a first layer of a build material,e.g., a powder, to a vertically indexable build stage; (2) scanning thebuild material layer with the printing mechanism to impart to it theimage of the relevant two-dimensional layer of the article being built;(3) lowering the stage to receive another layer of build material; and(4) repeating steps (1) through (3) until the article is completed. Thelayer-by-layer construction results in the formation of the desiredphysical article. Subsequent processing is often employed to enhance thephysical properties of the constructed physical article.

The term “printing mechanism” as used herein generically refers to thecomponent of the solid free-form fabrication system that (1) physicallyimparts the image of the relevant two-dimensional layer of the articlethat is being constructed onto a construction material that is upon thestage upon which the article is being built, and/or (2) deposits a layerof a construction material in the image of such a two-dimensional layerupon the stage or a previous layer. For example, in the 3DP process, theprinting mechanism is a print head comprising one or more print jets andassociated scanning and control mechanisms that spray droplets of abinder fluid onto a powder layer to form the image of the relevanttwo-dimensional layer of the physical article. In the SLS process, theprinting mechanism is a laser and associated scanning and controlmechanisms that scan a laser beam across a powder layer to fuse powdertherein together in the form of the image of the relevanttwo-dimensional layer of the physical article.

A physical article that is to be constructed by solid free-formfabrication is first represented electronically as a three-dimensionalmodel. Typically, the three-dimensional model is stored in the format ofa stereolithographic file or .stl file. Files in this format arereferred to herein as “STL files.” An STL file typically comprises of acollection of triangles which sketch out the exterior and interiorsurfaces of the physical article. Features such as surface normals,i.e., a short ray pointing perpendicularly out from a face of thetriangle, are associated with the triangles to indicate which surface ofthe triangle is facing outward from the physical object. The outwardfacing surface is sometimes referred to as an “exterior” or “front” faceand the inward facing surface is sometimes referred to as an “interior”or “back” face.

Conventionally in solid free-form fabrication, an STL file is operatedupon by a program that is referred to herein as a “slicing program.” Aslicing program slices the model that is in STL file format along one ofthree mutually orthogonal axes, e.g., the Z-axis of a set of X-Y-Z axes,to create a stack of two-dimensional layers of a specified layerthickness, i.e., slices. Within each slice, the relevant portion of themodel is represented by a set of two-dimensional closed polygons.

The slicing program is typically a separate program, e.g., the Magics RPprogram which is available from the Materialise NV, Leuven, Belgium.However, a slicing program may also be a subset of a larger program thatprocesses the STL file or functionally similar file into instructionsfor a solid free-form fabrication machine to construct the physicalarticle. In either case, application of the slicing program results in abinary file which comprises a stack of two-dimensional slices whereineach two-dimensional layer is represented by a set of two-dimensionalclosed polygons. Such binary files are referred to herein as “slicestack files.”

Traditionally, the control software of the solid free-form fabricationmachine utilizes a slice stack file to manufacture the physical articlelayer-by-layer. Typically, the solid free-form fabrication machinecontrol software transforms each model layer represented in the slicestack file into a set of instructions for controlling the printingmechanism in the creation of the corresponding physical layer of thephysical article. These instructions tell the printing mechanism whereto cause the build material to be (1) bound together, e.g., through theapplication of energy from a lasing or electron beam device or throughthe jetting of a binder from a jet print head, and/or (2) deposited.This operation of the printing mechanism is referred to genericallyherein as “printing” and these instructions are referred to genericallyherein as the “printing instructions,” irregardless of the type ofprinting mechanism that is actually employed.

FIG. 1 presents a flowchart representation of a conventional process forcreating a physical article by solid free-form fabrication. In exemplarconventional process 10, STL file data 12 for a model of the physicalarticle that is to be built is input into a slicing program 14. Alsoinput into the slicing program 14 is the selected layer spacing value 16that is to be applied to the entire model. The slicing program 14 usesthis input to create a slice stack file 18. Each planar slice isseparated from the next slice by the selected layer spacing value 16.Data from the slice stack file 18 is then input into a storage device20. Subsequently, the data from the slice stack file 18 is output fromthe storage device 20 into the control software 22 of a solid free-formfabrication machine. The control software 22 processes the slice stackfile 18 data to create printing instructions 24 for causing the printingmechanism 26 to print each layer 28 until the completion of the physicalarticle 30.

There are several drawbacks to the conventional method. Among these arethe costs occasioned by the need to utilize a slicing program. Thesecosts include the cost of purchasing or developing, implementing, and/ormaintaining the slicing program. They also include the costs of thehardware that must be allocated to the operation and the storage of theslicing program and the resulting slice stack files. They furtherinclude the computational costs of utilizing the slicing program andthen utilizing the slice stack files. Additionally, there is the cost ofthe time needed to utilize the slicing program to create the slice stackfiles.

Another drawback is the loss of detail and other information from theoriginal three-dimensional model of the physical article. Each time adata set representing the model is transformed, some detail andinformation about the model is lost. Slicing programs attempt torepresent the models they are operating upon in terms of particularslice planes. Thus, all information from the original model aboutdetails that exist between the slice planes is not captured by theslicing program and is therefore lost. This means the original model isnot available from the slice stack file for viewing, moving, scaling, orother operations. This also means that the slice stack file can only beused by a solid free-form fabrication machine that is capable ofutilizing the particular slice thickness that was selected in creatingthe slice stack file and which is capable of using the same printingdevice indexing steps and other parameters. This limits the portabilityof the slice stack file from one solid free-form fabrication machine toanother.

A few years ago, one of the inventors of the present invention,disclosed in U.S. Patent Application Publication US 2010/0168890 A1methods utilizing ray casting for converting STL files without the useof a slicing program into instructions to the printing mechanism for thelayer-by-layer construction of the physical article. Although thosemethods were superior in many ways to other conventional STL conversionmethods, they involved extensive computations and could result in theloss of some resolution.

SUMMARY OF THE INVENTION

The present invention overcomes at least some of the aforementionedproblems associated with the prior art by providing methods for quicklyand efficiently—in terms of computational resources—converting STL filesrepresenting an article or articles to be built by SFFF without the useof a conventional slicing program. The present invention accomplishesthis by utilizing an application program interface (“API”) to generate abitmap corresponding to each particular layer of the article that is tobe printed directly from the article's STL file. Preferably, thisconversion is done essentially in real time immediately before theparticular layer is to be printed, although it is also within the scopeof the present invention to store the results of the conversion of oneor more—or even all—of the layers for later use. Once generated, thebitmap may then be used in configuring the printing instructions for theprinting mechanism to print that particular layer. In SFFF processesthat use a rasterizing printing mechanism, e.g. an ink jet type printhead, a scanning radiation source, or a selectively-masked radiationexposure source, the bitmap may be used to directly indicate the pixellocations that are to be printed. In SFFF processes which rely onvectorized instructions for printing, e.g. as in an SLS process, anelectron-beam process, or a fused deposition process, the bitmap may beused in the creation of the vectors utilized in printing.

BRIEF DESCRIPTION OF THE DRAWINGS

The criticality of the features and merits of the present invention willbe better understood by reference to the attached drawings. It is to beunderstood, however, that the drawings are designed for the purpose ofillustration only and not as a definition of the limits of the presentinvention.

FIG. 1 is a flowchart of a prior art process for producing a physicalarticle by solid free-form fabrication.

FIG. 2 is schematic perspective view of torus oriented vertically in aprint box.

FIG. 3 is a schematic perspective view of a portion of the torus of FIG.2 showing STL file tessellated triangles on its viewer-facing side.

FIG. 4 is a schematic perspective view of the lower half of the torus ofFIG. 1.

FIG. 5 is a schematic top view orthographic projection of the torus ofFIG. 4.

FIG. 6 is a schematic depiction of the results of rendering theprojection of FIG. 5 after the culling of interior faces.

FIG. 7 is a schematic depiction of the results of rendering theprojection of FIG. 5 after the culling of exterior faces.

FIG. 8 is a schematic top view of a build layer after scene finalizationhas combined in an exclusive or fashion the depictions shown in FIGS. 6and 7.

FIG. 9 is a flowchart of a process for making an article by solidfree-form fabrication according to an embodiment.

FIG. 10 is a flowchart of a process for making an article by solidfree-form fabrication according to another embodiment.

FIG. 11 is a flowchart of a process for making an article by solidfree-form fabrication according to another embodiment.

DESCRIPTION OF PREFERRED EMBODIMENTS

In this section, some preferred embodiments of the present invention aredescribed in detail sufficient for one skilled in the art to practicethe present invention without undue experimentation. It is to beunderstood, however, that the fact that a limited number of preferredembodiments are described herein does not in any way limit the scope ofthe present invention as set forth in the claims. It is to be understoodthat whenever a range of values is described herein or in the claimsthat the range includes the end points and every point therebetween asif each and every such point had been expressly described. Unlessotherwise stated, the word “about” as used herein and in the claims isto be construed as meaning the normal measuring and/or fabricationlimitations related to the value which the word “about” modifies. Unlessexpressly stated otherwise, the term “embodiment” is used herein to meanan embodiment of the present invention.

The volumetric portion or portions of the SFFF (solid free-formfabrication) apparatus in which the article or articles are to be madeis referred to herein as the “print box”, whether the SFFF apparatus isconfigured for batch processing or continuous processing. For the sakeof production efficiency, it is common to make use of as much of theprint box volume as possible in each SFFF apparatus build cycle bymaking multiple articles and/or multiple copies of a single articleduring each SFFF apparatus build cycle. In embodiments, each of the oneor more articles that are to be made by a SFFF process is firstrepresented by an STL file. The STL file contains the informationnecessary to describe the geometry of its corresponding article. Forsimplicity sake, the general process used in embodiments in which asingle article is to be made is first described below.

Embodiments use an API (application program interface) to convert an STLfile of an article into individual bitmaps, each of which corresponds toone of the SFFF process print layers for making the article. It is to beunderstood that the word “convert” and its various inflexions are usedherein to mean that the STL file is used as a starting point from whichthe inventive process departs on its way to arriving at the individualprint layer bitmaps. The STL file itself is not changed into somethingelse by the inventive process, but is left intact for reuse.

The conversion is preferably done for each particular print layeressentially in real time immediately before the particular layer is tobe printed, although it is also within the scope of the presentinvention to store the results of the conversion of one or more—or evenall—of the layers for later use.

As depicted by the flowchart in FIG. 9, in some embodiments, for atleast one layer (and preferably all of the layers) of an article that isto be three-dimensionally printed, the API is used to do the followingutilizing the STL file that contains a geometric representation, i.e.,model, of the article:

-   -   1. Configure the rendering context in terms of bitsize and the        number of bits that are to represent each pixel by creating a        first bitmap, BM1 which is sized (a) to represent the physical        size of the desired print area, and (b) according to the        resolution of the printer.    -   2. Instruct the rendering system to use BM1 as a rendering        target.    -   3. Instruct the rendering system to do the following:        -   a) clear depth and color buffers;        -   b) enable depth testing;        -   c) set up a top (or bottom) view orthographic projection;        -   d) set background color to a first color, C1;        -   e) clip the STL file model of the article with a horizontal            clipping plane at a desired height, Z_(n), to disregard all            model geometry above Z_(n) (or to disregard all model            geometry below Z_(n) when the orthographic projection was            set to be a bottom view);        -   f) cull the interior (back) faces of the model;        -   g) render the model in color C1;        -   h) cull the exterior (front) faces of the model;        -   i) render the model in a second color, C2, (which is            different from C1); and        -   j) scene finalize to BM1, i.e., finalize the scene to target            bitmap, BM1.    -   4. Utilize BM1 for printing the layer.

In the step of utilizing the created bitmap for printing the layer, thebitmap is accessed to create the printing instructions for the printingmechanism of the SFFF. For example, where the printing mechanismincludes an inkjet-like print head, the bitmap may be used to instructthe print head exactly where to deposit a binder fluid on thethen-current surface layer of the print box or relatively where to makesuch deposits after any desired offsets are taken into consideration. Asanother example, in SFFF processes which rely on vectorized instructionsfor printing, e.g. as in an SLS process, an electron-beam process, or afused deposition process, the bitmap may be used in the creation of thevectors utilized in printing.

FIGS. 2 through 8 provide an overall depiction of the above-describedprocess for making a single instance of solid torus, article 100, by anSFFF process. In this depiction, Step 3(c) of the process will use a topview orthographic projection. Referring to FIG. 2, the direction marker102 shows that, for the purpose of this discussion, article 100 isoriented vertically in the print box of the SFFF apparatus with itscentral axis 104 parallel to the X-direction of the print box. Theinitial build layer for making article 100 intersects the X-Y plane ofthe print box. Each of the other build layers that will be used to makearticle 100 in the SFFF apparatus is parallel to the X-Y plane of theprint box.

FIG. 3 gives a suggestion of what a portion 106 of the article 100 wouldlook like when it is drawn with the tessellated triangles of an STL filemodel by showing the tessellated triangles on the viewer-facing surfaceof article 100. Including the viewer-facing surface of article 100 inthis depiction avoids the confusion that arises when the tessellatedtriangles on both the viewer-facing surface and its obverse are seen atthe same time as happens in an unenhanced drawing of an STL file model.

A build layer selected at a height Z_(0.5), which is halfway up theZ-axis height of article 100, will now be chosen for the sake ofillustration. FIG. 4 shows a perspective view of the article 100 fromits bottom up to this build layer, which is essentially what remains ofthe article 100 when the STL file model of the article 100 is clippedwith a horizontal plane at this height, Z_(0.5). At this build layerheight, the article 100 has two identical cross-sectional surfaces, 108a, 108 b. FIG. 5 shows the top view orthographic projection of thearticle 100 at this build layer height, with the two cross-sectionalsurfaces 108 a, 108 b, shown in this drawing in right-slanting hatchingfor clarity.

FIG. 6 shows the result, first image 110, of the rendering Step 3(g)after the culling of the interior (back) faces of the model. Theright-slanting hatching is used to depict color C1.

FIG. 7 shows the result, second image 112, of the rendering Step 3(i)after the culling of the exterior (front) faces of the model. TheVertical hatching is used to depict color C2.

FIG. 8 shows the build layer as it would be represented in bitmap BM1after the scene finalization of Step 3(j). The scene finalizationeffectively combines the first and second images 110, 112 in an“exclusive or” fashion. The two areas 114 a, 114 b, are made up of thepixels which are to be printed in the SFFF apparatus for the printlayer. These two layers 114 a, 114 b, correspond to the twocross-sectional surfaces 108 a, 108 b of FIG. 5.

In some preferred embodiments, the above-described process is modifiedto lessen the effect of stray or missing pixels in the bitmap which mayresult from floating point inaccuracies that can arise from therendering of the STL file triangles. In these embodiments, a secondbitmap, BM2, is created in addition to bitmap BM1, and then the twobitmaps are compared to create a third bitmap, BM3, which is then usedfor printing the layer. The bitmap BM2 is created using the oppositeview orthographic projection of the STL model of the article from thatwas used for creating bitmap BM1 and adjusting the clipping accordingly.Thus, if BM1 is created using a top view orthographic projection andclipping which disregarded all model geometry above height Z_(n), thenBM2 is created using a bottom view orthographic projection and clippingwhich disregards all model geometry below height Z_(n). A restatement ofthe process to include this modification is given below and depicted inthe flow chart of FIG. 10 for at least one print layer of the article:

-   -   1. Configure the rendering context in terms of bitsize and the        number of bits that are to represent each pixel by creating a        first bitmap, BM1, a second bitmap, BM2, and a third bitmap BM3,        which are sized (a) to represent the physical size of the        desired print area, and (b) according to the resolution of the        printer.    -   2. Instruct the rendering system to use BM1 as a first rendering        target.    -   3. Instruct the rendering system to do the following:        -   a) clear depth and color buffers;        -   b) enable depth testing;        -   c) set up a top view orthographic projection;        -   d) set the background color to a first color, C1;        -   e) clip the model with a horizontal clipping plane at a            desired height, Z_(n), to disregard all model geometry above            Z_(n);        -   f) cull the interior (back) faces of the model;        -   g) render the model in color C1;        -   h) cull the exterior (front) faces of the model;        -   i) render the model in a second color, C2, (which is            different from C1); and        -   j) scene finalize to BM1.    -   4. Instruct the rendering system to use BM2 as a second        rendering target.    -   5. Instruct the rendering system to do the following:        -   a) clear depth and color buffers;        -   b) enable depth testing;        -   c) set up a bottom view orthographic projection;        -   d) set background color to C1;        -   e) clip the model with a horizontal clipping plane at a            desired height, Z_(n), to disregard all model geometry below            Z_(n);        -   f) cull the interior (back) faces of the model;        -   g) render the model in color C1;        -   h) cull the exterior (front) faces of the model;        -   i) render the model in C2; and        -   j) scene finalize to BM2.    -   6. Horizontally invert BM2.    -   7. Compare BM1 to BM2 on a pixel-to-pixel basis to determine if        the value of BM1 pixel (x_(i), y_(j)) is the same as or        different from the value of the corresponding BM2 pixel (x_(i),        y_(j)), and then:        -   a) when the values are the same, set the value of BM1 pixel            (x_(i), y_(j)) to be the value of a corresponding pixel of            BM3; or        -   b) when the values are different, then the value of the BM1            pixel (x_(i), y_(j)) is compared with the values its            neighboring eight pixels, i.e. pixels BM1 (x_(i−1),            y_(j+1)), BM1 (x_(i), y_(j+1)), BM1 (x_(i+1), y_(j+1)), BM1            (x_(i−1), y_(j)), BM1 (x_(i+1), y_(j)), BM1 (x_(i−1),            y_(j−1)), BM1 (x_(i), y_(j−1)), BM1 (x_(i+1), y_(j−1)), to            determine the value having the majority of instances among            the nine compared pixels, then the majority value is to be            set to as the value of a corresponding pixel of BM3.    -   8. Utilize BM3 for printing the layer.

It is to be understood that Step 1 in the modified process recitescreating all three bitmaps at the same time only as a convenience andeach can be created at any desired time. It is also to be understoodthat BM1 and BM2 are to be of the same size so that they can be comparedon a pixel-to-pixel basis. BM3 may be the same size as the other twobitmaps, or larger than them, for example to accommodate printingoffsets.

It is also to be understood that the method of determining what value togive to a pixel in Step 7(b) may be modified to use more or lesssurrounding pixels for comparison. For example, the comparison can bewith just the pixels which are contiguous with the tested pixel on adiagonal, a column, or a row.

It is also to be understood that the inversion of bitmap BM2 in Step 6is performed so that the locations represented by the pixels of bitmapBM2 correlate exactly with those represented by bitmap BM1. Other meansmay be used to arrive at this correlation. For example, the comparisondone in Step 7 can be done utilizing a non-inverted bitmap BM2 if thedirections for pixel selection of bitmaps BM1 and BM2 are picked to takeinto account that bitmaps BM1 and BM2 are essentially mirror images ofeach other. As another example, the populating of bitmap BM2 (or bitmapBM1) can be done in a fashion that likewise avoids the need to perform aseparate inversion step of bitmap BM2 (or bitmap BM1).

It is also to be understood that, though it is preferred, it is notnecessary to use a third bitmap, e.g. BM3, to store the results of thecomparison of BM1 and BM2 so long as the results get stored as a bitmap.For example, either or both of BM1 and BM2 can be repopulated with thecomparison results and then the bitmap or bitmaps containing the resultsused in place of BM3 in Step 8 above. Such an embodiment is depicted bythe flow chart of FIG. 11.

The above-described inventive processes can be applied to makingmultiple articles and/or multiple copies of a single article during aSFFF apparatus build cycle. In the cases where geometrically differentarticles are to be made in the same print bed, the selected inventiveprocess is applied to the STL file of each article and the results ofthe processes are combined into a single bitmap that is then used forprinting the layer. The same would also be done where multiple copies ofthe same article are to be made in the same print bed, but they aredifferently oriented in the print bed and/or are located at differentheights in the print bed. In the case where multiple copies of the samearticle are to be made, the selected inventive process need be appliedonly once to the STL file of the article and the results stored, thenthe bitmap that is to be used for printing the layer is populated withmultiple copies of the stored results at desired spacings in the layer.

Embodiments may be practiced with any API which is capable of renderingthree-dimensional vector graphics. Examples of such APIs include theKhronos Group's OpenGL and Microsoft's Direct3D. Note that the inventiveprocesses can be used with ordinary computer processing hardware or inconjunction with dedicated graphics hardware for a further increase incomputational speed.

It is to be understood that the inventive processes may be used in themaking of one or more layers of an article in the print box of any SFFFapparatus, regardless of whether the SFFF apparatus is configured forbatch processing or continuous processing.

While only a few embodiments of the present invention have been shownand described, it will be obvious to those skilled in the art that manychanges and modifications may be made thereunto without departing fromthe spirit and scope of the invention as described in the claims. AllUnited States patents and patent applications, all foreign patents andpatent applications, and all other documents identified herein areincorporated herein by reference as if set forth in full herein to thefull extent permitted under the law.

What is claimed is:
 1. A process for making an article by solidfree-form fabrication, the process including the steps of: a) providingan STL file containing a model of the article; b) for at least one printlayer of the article, use an application programming interface toinstruct a rendering system to use a first bitmap, BM1, as a target andi) clear depth and color buffers; ii) enable depth testing; iii) set upa top or bottom view orthographic projection; iv) set background colorto a first color, C1; v) clip the model with a horizontal clipping planeat a desired height, Z_(n), to disregard all article geometry aboveZ_(n) when the orthographic projection was set to be a top view or todisregard all model geometry below Z_(n) when the orthographicprojection was set to be a bottom view; vi) cull interior faces of themodel; vii) render the model in C1; viii) cull exterior faces of themodel; ix) render the model in a second color, C2; and x) scene finalizeto BM1; and c) utilize BM1 for printing the at least one print layer. 2.The process of claim 1, wherein Step (b) is performed for each printlayer of the article.
 3. The process of claim 1, further comprising thestep of selecting the application programming interface to be OpenGL. 4.A process for making an article by solid free-form fabrication, theprocess including the steps of: a) providing an STL file containing amodel of the article; b) for at least one print layer of the article,use an application programming interface to instruct a rendering systemto use a first bitmap, BM1, as a target and i) clear depth and colorbuffers; ii) enable depth testing; iii) set up a top view orthographicprojection; iv) set background color to a first color, C1; v) clip themodel with a horizontal clipping plane at a desired height, Z_(n), todisregard all model geometry above Z_(n); vi) cull the interior faces ofthe model; vii) render the model of the model in C1; viii) cull theexterior faces of the model; ix) render the model in a second color, C2;and x) scene finalize to BM1; c) for the at least one print layer, usethe application programming interface to instruct the rendering systemto use a second bitmap, BM2, as a target and i) clear depth and colorbuffers; ii) enable depth testing; iii) set up a bottom vieworthographic projection; iv) set background color to a first color, C1;v) clip the model with a horizontal clipping plane at Z_(n) to disregardall model geometry below Z_(n); vi) cull the interior faces of themodel; vii) render the model in C1; viii) cull the exterior faces of themodel; ix) render the model in a second color, C2; and x) scene finalizeto BM2; d) compare BM1 to BM2 on a pixel-to-pixel basis; e) use theresults of the comparison in Step (d) for printing the at least oneprint layer.
 5. The process of claim 4, wherein Steps (b) through (e)are performed for each print layer of the article.
 6. The process ofclaim 4, wherein the comparison in Step (d) comprises comparing BM1 toBM2 on a pixel-to-pixel basis to determine if the value of BM1 pixel(x_(i), y_(j)) is the same as or different from the value of thecorresponding BM2 pixel (x_(i), y_(j)), and then: i) when the values arethe same, select the value of BM1 pixel (x_(i), y_(j)) to be the valueto be used as part of the results in Step (e); or ii) when the valuesare different, then the value of the BM1 pixel (x_(i), y_(j)) iscompared with the values its neighboring eight pixels, i.e. pixels BM1(x_(i−1), y_(j+1)), BM1 (x_(i), y_(j+1)), BM1 (x_(i+1), y_(j+1)), BM1(x_(i−1), y_(j)), BM1 (x_(i+1), y_(j)), BM1 (x_(i−1), y_(j−1)), BM1(x_(i), y_(j−1)), BM1 (x_(i+1), y_(j−1)), to determine the value havinga majority of instances among the nine compared pixels, then select themajority value as the value to be used as part of the results in Step(e).
 7. The process of claim 4, wherein the comparison in Step (d) arestored in a third bitmap, BM3, and Step (d) comprises comparing BM1 toBM2 on a pixel-to-pixel basis to determine if the value of BM1 pixel(x_(i), y_(j)) is the same as or different from the value of thecorresponding BM2 pixel (x_(i), y_(j)), and then: i) when the values arethe same, set the value of a corresponding BM3 pixel (x_(i), y_(j)) tobe the value of the BM1 pixel (x_(i), y_(j)); or ii) when the values aredifferent, then the value of the BM1 pixel (x_(i), y_(j)) is comparedwith the values its neighboring eight pixels, i.e. pixels BM1 (x_(i−1),y_(j+1)), BM1 (x_(i), y_(j+1)), BM1 (x_(i+1), y_(j+1)), BM1 (x_(i−1),y_(j)), BM1 (x_(i+1), y_(j)), BM1 (x_(i−1), y_(j−1)), BM1 (x_(i),y_(j−1)), BM1 (x_(i+1), y_(j−1)), to determine the value having amajority of instances among the nine compared pixels, then the majorityvalue is to be set the value of a corresponding BM3 pixel (x_(i), y_(j))to be the majority value.
 8. The process of claim 4, further comprisingthe step of selecting the application programming interface to beOpenGL.